package cc.rengu.igas.cops.common.util;

import cc.rengu.oltp.service.common.enums.BizStatusEnum;
import cc.rengu.oltp.service.common.enums.PayTypeEnum;
import cc.rengu.oltp.service.common.enums.TransStatusEnum;

/**
 * @Description 内外状态转换
 * @Author panky
 * @date 2020/5/20
 **/
public class CopsSwitchUtil {

    /**
     * 交易状态转换 内部转外部
     *
     * @param transStatus 交易状态
     * @param bizStatus   业务状态
     * @return 外部交易状态
     */
    public static String switchTransStateCopsToOut(String transStatus, String bizStatus) {
        if (BizStatusEnum.CANCEL.getStatus().equals(bizStatus)) {
            return "8";
        } else if (BizStatusEnum.PROCESSING.getStatus().equals(bizStatus)) {
            return "9";
        } else if (TransStatusEnum.TRANS_INIT.getStatus().equals(transStatus)) {
            return "9";
        } else if (TransStatusEnum.TRANS_TIMEOUT.getStatus().equals(transStatus)) {
            return "9";
        } else if (TransStatusEnum.TRANS_SUCC.getStatus().equals(transStatus) &&
                BizStatusEnum.FINISH.getStatus().equals(bizStatus)) {
            return "0";
        } else if (TransStatusEnum.SYSTEM_REJECT.getStatus().equals(transStatus)
            /*|| TransStatusEnum.SYSTEM_REJECT.getStatus().equals(transStatus)*/) {
            return "1";
        }
        return "1";
    }

    /**
     * 通道转换为支付方式 内转外
     * 00：本行卡快捷支付
     * 01：网银
     * 02：手机银行
     * 03：微信
     * 04：信联
     * 05：银联全渠道
     * 06：银联POS
     * 08：支付宝
     *
     * @param innerDstChannel 内部系统调用的通道
     * @return COPS接口支付方式
     */
    public static String switchPayChannelType(String innerDstChannel) {
        if ("05".equals(innerDstChannel)) {
            //银联条码
            return "01";
        } else if ("03".equals(innerDstChannel)) {
            //微信条码
            return "07";
        } else if ("08".equals(innerDstChannel)) {
            //支付宝条码
            return "08";
        } else {
            return "";
        }
    }

    /**
     * 转换渠道支付方式
     *
     * @param payType 系统支付方式
     * @return
     */
    public static String changePayChannelType(String payType) {
        if (PayTypeEnum.CUPS_CLOUD.getPayType().equals(payType)) {
            //银联条码
            return "01";
        } else if (PayTypeEnum.WECHAT.getPayType().equals(payType)) {
            //微信条码
            return "07";
        } else if (PayTypeEnum.ALIPAY.getPayType().equals(payType)) {
            //支付宝条码
            return "08";
        } else {
            return "";
        }
    }
}
